﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using Play_Sound;
namespace Play_sound_serv
{
    public class Xml_help
    {
 
            public static XmlDocument xmldoc = new XmlDocument();
            // 加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
            // public static XmlDeclaration xmldecl;
            public static int vcount = 0;
            public string _file = "";
            public string[] cmd = { "" };
            public string[] sound = { "" };
            public string Serv_Url = "";

            public void createrxml(string _file)
            {
                XmlDeclaration xmldec1 = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null);
                xmldoc.AppendChild(xmldec1);
                //加入一个根元素
                XmlElement xmlelem = xmldoc.CreateElement("", "opc", "");
                xmldoc.AppendChild(xmlelem);
                //加入另外一个元素       
                XmlNode root = xmldoc.SelectSingleNode("opc");//查找根元素
                XmlElement xe1 = xmldoc.CreateElement("count");//创建一个<Node>节点
                XmlElement xei0 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei1 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei2 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei3 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei4 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei5 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei6 = xmldoc.CreateElement("item");//创建一个<Node>节点
                XmlElement xei7 = xmldoc.CreateElement("item");//创建一个<Node>节点
                xe1.SetAttribute("id", "c0");//设置该节点id属性
                xe1.SetAttribute("zhi", "8");//设置该节点zhi属性
                xe1.SetAttribute("url", "http://127.0.0.1:7766/");//设置该节点zhi属性

                xei0.SetAttribute("id", "v0");//设置该节点id属性
                xei0.SetAttribute("cmd", "8000");//设置该节点name属性
                xei0.SetAttribute("sound", "收到,请讲");//设置该节点id属性
                xei0.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

                xei1.SetAttribute("id", "v1");//设置该节点id属性
                xei1.SetAttribute("cmd", "8001");//设置该节点name属性
                xei1.SetAttribute("sound", "收到,请讲");//设置该节点id属性
                xei1.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

                xei2.SetAttribute("id", "v2");//设置该节点id属性
                xei2.SetAttribute("cmd", "8002");//设置该节点name属性
                xei2.SetAttribute("sound", "收到,请讲");//设置该节点id属性
                xei2.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

                xei3.SetAttribute("id", "v3");//设置该节点id属性
                xei3.SetAttribute("cmd", "8003");//设置该节点name属性
                xei3.SetAttribute("sound", "收到,请讲");//设置该节点id属性
                xei3.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

                xei4.SetAttribute("id", "v4");//设置该节点id属性
                xei4.SetAttribute("cmd", "8004");//设置该节点name属性
                xei4.SetAttribute("sound", "收到,请讲");//设置该节点id属性
                xei4.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

                xei5.SetAttribute("id", "v5");//设置该节点id属性
               xei5.SetAttribute("cmd", "8005");//设置该节点name属性
                xei5.SetAttribute("sound", "收到,请讲");//设置该节点id属性
               xei5.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

               xei6.SetAttribute("id", "v6");//设置该节点id属性
               xei6.SetAttribute("cmd", "8006");//设置该节点name属性
               xei6.SetAttribute("sound", "收到,请讲");//设置该节点id属性
               xei6.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。
               xei7.SetAttribute("id", "v7");//设置该节点id属性
               xei7.SetAttribute("cmd", "8007");//设置该节点name属性
               xei7.SetAttribute("sound", "收到,请讲");//设置该节点id属性
               xei7.SetAttribute("utime", "0");//设置该节点utime属性,最后更新时间。

               root.AppendChild(xe1);//添加到<opc>节点中
                root.AppendChild(xei0);
                root.AppendChild(xei1);
                root.AppendChild(xei2);
                root.AppendChild(xei3);
                root.AppendChild(xei4);
                root.AppendChild(xei5);
                root.AppendChild(xei6);
                root.AppendChild(xei7);
                //保存创建好的XML文档
                xmldoc.Save(_file);
            } //end creat xml
            /// <summary>
            /// xml的类手动初始化。
            /// </summary>
            /// <param name="_file1"></param>
            public void xml_init(string _file1)
            {
                try
                {
                    _file = _file1;
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.Load(_file);
                    XmlNodeList nodelist = xmlDoc.SelectSingleNode("opc").ChildNodes;
                    //    Console.WriteLine(nodelist.Item(1));
                    foreach (XmlNode xn in nodelist)
                    {
                        XmlElement xe = (XmlElement)xn;
                        if (xe.GetAttribute("id") == "c0")
                        {
                            vcount = Convert.ToInt32(xe.GetAttribute("zhi"));
                            Serv_Url = xe.GetAttribute("url");
                        }
                    }
                    Array.Resize<string>(ref cmd, vcount);
                    Array.Resize<string>(ref sound, vcount);
                    for (int i = 0; i < vcount; i++)
                    {
                        foreach (XmlNode xn1 in nodelist)
                        {
                            XmlElement xe1 = (XmlElement)xn1;
                            if (xe1.GetAttribute("id") == "v" + i)
                            {
                                cmd[i] = xe1.GetAttribute("cmd");
                                sound[i] = xe1.GetAttribute("sound");
                            }
                        }
                    }
                    //
                }
                catch (Exception err)
                { LOG.Log(err.ToString()); }

            }//end init
    }
}
